﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TOAlignet;

namespace DOAlignet
{
    public class DOSolPaseProduccion
    {
        DBAlignetTesisDataContext dbml;

        public DOSolPaseProduccion()
        {
            dbml = new DBAlignetTesisDataContext();
        }

        public List<TOSolPaseProduccion> obtenerSolicitudesXUsuario(int codigoUsuario)
        {

            List<TOSolPaseProduccion> listaPaseProduccion = new List<TOSolPaseProduccion>();

            
            
            var solPasesProduccion = (from paseprod in dbml.T_SOLPASEPROD
                                   where paseprod.IN_IDUSUARIO == codigoUsuario
                                      &&  paseprod.IN_ESTADO != 0
                                   select paseprod
                             ) ;

            foreach (var solPaseProduccion in solPasesProduccion)
            {

                TOSolPaseProduccion toSolPaseProduccion = new TOSolPaseProduccion();
                toSolPaseProduccion.Codigo = solPaseProduccion.IN_IDSOLPASEPROD;
                toSolPaseProduccion.CodigoProyecto = solPaseProduccion.IN_IDPROYECTO;
                toSolPaseProduccion.CodigoUsuario = solPaseProduccion.IN_IDUSUARIO;
                toSolPaseProduccion.Tipo = (int)solPaseProduccion.IN_TIPO;
                toSolPaseProduccion.FechaCreacion = (DateTime)solPaseProduccion.DT_FECHACREACION;
                toSolPaseProduccion.Estado = (int)solPaseProduccion.IN_ESTADO;
                toSolPaseProduccion.NombreProyecto = solPaseProduccion.T_PROYECTO.VC_DESCRIPCION;
                toSolPaseProduccion.NombreUsuario = solPaseProduccion.T_USUARIO.VC_NOMBRE;
                toSolPaseProduccion.Descripcion = solPaseProduccion.VC_DESCRIPCION;
                listaPaseProduccion.Add(toSolPaseProduccion);
            
            }

            return listaPaseProduccion;
        }

        public TOSolPaseProduccion obtenerSolicitudXCodigo(int codigo)
        {

            var solPaseProduccion = (from paseprod in dbml.T_SOLPASEPROD
                                      where paseprod.IN_IDSOLPASEPROD == codigo
                                      select paseprod
                             ).Single();

            

                TOSolPaseProduccion toSolPaseProduccion = new TOSolPaseProduccion();
                toSolPaseProduccion.Codigo = solPaseProduccion.IN_IDSOLPASEPROD;
                toSolPaseProduccion.CodigoProyecto = solPaseProduccion.IN_IDPROYECTO;
                toSolPaseProduccion.CodigoUsuario = solPaseProduccion.IN_IDUSUARIO;
                toSolPaseProduccion.Tipo = (int)solPaseProduccion.IN_TIPO;
                toSolPaseProduccion.FechaCreacion = (DateTime)solPaseProduccion.DT_FECHACREACION;
                toSolPaseProduccion.Estado = (int)solPaseProduccion.IN_ESTADO;
                toSolPaseProduccion.Descripcion = solPaseProduccion.VC_DESCRIPCION;
                toSolPaseProduccion.Justificacion = solPaseProduccion.VC_JUSTIFICACION;
            return toSolPaseProduccion;
        }

        public List<TOSolPaseProduccion> obtenerSolicitudesXEstado(int estado)
        {

            List<TOSolPaseProduccion> listaPaseProduccion = new List<TOSolPaseProduccion>();

            var solPasesProduccion = (from paseprod in dbml.T_SOLPASEPROD
                                      where  paseprod.IN_ESTADO == estado
                                      select paseprod
                             );


            foreach (var solPaseProduccion in solPasesProduccion)
            {

                TOSolPaseProduccion toSolPaseProduccion = new TOSolPaseProduccion();
                toSolPaseProduccion.Codigo = solPaseProduccion.IN_IDSOLPASEPROD;
                toSolPaseProduccion.CodigoProyecto = solPaseProduccion.IN_IDPROYECTO;
                toSolPaseProduccion.CodigoUsuario = solPaseProduccion.IN_IDUSUARIO;
                toSolPaseProduccion.Tipo = (int)solPaseProduccion.IN_TIPO;
                toSolPaseProduccion.FechaCreacion = (DateTime)solPaseProduccion.DT_FECHACREACION;
                toSolPaseProduccion.Estado = (int)solPaseProduccion.IN_ESTADO;
                toSolPaseProduccion.NombreProyecto = solPaseProduccion.T_PROYECTO.VC_DESCRIPCION;
                toSolPaseProduccion.NombreUsuario = solPaseProduccion.T_USUARIO.VC_NOMBRE;
                toSolPaseProduccion.Descripcion = solPaseProduccion.VC_DESCRIPCION;
                listaPaseProduccion.Add(toSolPaseProduccion);

            }

            return listaPaseProduccion;
        }

        public List<TOSolPaseProduccion> obtenerSolicitudes()
        {

            List<TOSolPaseProduccion> listaPaseProduccion = new List<TOSolPaseProduccion>();

            var solPasesProduccion = (from paseprod in dbml.T_SOLPASEPROD
                                      where paseprod.IN_ESTADO!=0
                                     select paseprod
                              );

            foreach (var solPaseProduccion in solPasesProduccion)
            {

                TOSolPaseProduccion toSolPaseProduccion = new TOSolPaseProduccion();
                toSolPaseProduccion.Codigo = solPaseProduccion.IN_IDSOLPASEPROD;
                toSolPaseProduccion.CodigoProyecto = solPaseProduccion.IN_IDPROYECTO;
                toSolPaseProduccion.CodigoUsuario = solPaseProduccion.IN_IDUSUARIO;
                toSolPaseProduccion.Tipo = (int)solPaseProduccion.IN_TIPO;
                toSolPaseProduccion.FechaCreacion = (DateTime)solPaseProduccion.DT_FECHACREACION;
                toSolPaseProduccion.Estado = (int)solPaseProduccion.IN_ESTADO;
                toSolPaseProduccion.NombreProyecto = solPaseProduccion.T_PROYECTO.VC_DESCRIPCION;
                toSolPaseProduccion.NombreUsuario = solPaseProduccion.T_USUARIO.VC_NOMBRE;
                toSolPaseProduccion.Descripcion = solPaseProduccion.VC_DESCRIPCION;
                listaPaseProduccion.Add(toSolPaseProduccion);

            }

            return listaPaseProduccion;
        }

        public TOSolPaseProduccion insertarSolicitud(TOSolPaseProduccion toSolPaseProduccion)
        {
            T_SOLPASEPROD solPaseProduccion = new T_SOLPASEPROD();
            
            solPaseProduccion.IN_IDUSUARIO = toSolPaseProduccion.CodigoUsuario;
            solPaseProduccion.IN_IDPROYECTO = toSolPaseProduccion.CodigoProyecto;
            solPaseProduccion.VC_DESCRIPCION = toSolPaseProduccion.Descripcion;
            solPaseProduccion.VC_JUSTIFICACION = toSolPaseProduccion.Justificacion;
            solPaseProduccion.IN_TIPO = toSolPaseProduccion.Tipo;
            solPaseProduccion.IN_ESTADO = toSolPaseProduccion.Estado;
            solPaseProduccion.DT_FECHACREACION = toSolPaseProduccion.FechaCreacion;
            dbml.T_SOLPASEPROD.InsertOnSubmit(solPaseProduccion);
            dbml.SubmitChanges();
            Console.WriteLine("prueba");
            toSolPaseProduccion.Codigo = solPaseProduccion.IN_IDSOLPASEPROD;
            return toSolPaseProduccion;
 
        }

        public void modificarSolicitud(TOSolPaseProduccion toSolPaseProduccion)
        {
            var solPaseProduccion = (from paseProd in dbml.T_SOLPASEPROD
                                     where paseProd.IN_IDSOLPASEPROD == toSolPaseProduccion.Codigo
                                     select paseProd).Single();




            solPaseProduccion.IN_IDUSUARIO = toSolPaseProduccion.CodigoUsuario;
            solPaseProduccion.IN_IDPROYECTO = toSolPaseProduccion.CodigoProyecto;
            solPaseProduccion.VC_DESCRIPCION = toSolPaseProduccion.Descripcion;
            solPaseProduccion.VC_JUSTIFICACION = toSolPaseProduccion.Justificacion;
            solPaseProduccion.IN_TIPO = toSolPaseProduccion.Tipo;
            solPaseProduccion.IN_ESTADO = toSolPaseProduccion.Estado;
            solPaseProduccion.DT_FECHACREACION = toSolPaseProduccion.FechaCreacion;

            dbml.SubmitChanges();

        }

        public void eliminarSolicitud(int codigo)
        {
            var solPaseProduccion = (from paseProd in dbml.T_SOLPASEPROD
                                     where paseProd.IN_IDSOLPASEPROD == codigo
                                     select paseProd).Single();




            
            solPaseProduccion.IN_ESTADO = 0;
            

            dbml.SubmitChanges();

        }
    }
}
